package oc.tm.sg.admin.web.service.impl;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import org.smart4j.framework.tx.annotation.Service;

import oc.tm.sg.admin.govern.domain.SgStatus;
import oc.tm.sg.admin.web.service.StatusService;
import oc.tm.sg.registry.common.extension.ExtensionLoader;
import oc.tm.sg.registry.common.status.Status;
import oc.tm.sg.registry.common.status.StatusChecker;

/**
 * 状态控制器
 * @author lry
 */
@Service
public class StatusServiceImpl implements StatusService {

	/**
	 * 获取状态信息详细列表
	 * @return
	 */
    public List<SgStatus> getStatus() {
        List<SgStatus> rows = new ArrayList<SgStatus>();
        Set<String> names = ExtensionLoader.getExtensionLoader(StatusChecker.class).getSupportedExtensions();
        SgStatus dubboStatus;
        for (String name : names) {
            StatusChecker checker = ExtensionLoader.getExtensionLoader(StatusChecker.class).getExtension(name);
            Status status = checker.check();
            if (status != null && !Status.Level.UNKNOWN.equals(status.getLevel())) {
                dubboStatus = new SgStatus();
                dubboStatus.setName(name);
                dubboStatus.setStatus(status);
                dubboStatus.setDescription(status.getMessage());
                rows.add(dubboStatus);
            }
        }
        return rows;
    }

}
